配置
bosun采用组合式的语法,每一个代码段都拥有一个类型和一个名字,通过{
和}
来圈定代码段的范围。代码段中都是键值对,类似于key = value
。键的名字在=
之前,并且其中不能含有空格,值是一个字符串,一直到行的末尾。可以使用`符号来定义复合行。在`符号以外的#
是注释符号,注释掉其后的所有文字。键值对两端的空格会被去除。文件采用UTF8的编码方式。a
变量
变量在执行的过程中会被简单地文本所替代-它不是智能的。变量是一堆以$
开头的字符串,当然也可以在字符串的两端加入中括号({
,}
),举个例子,,可以用${var}
来表示一个变量,在表达式被执行前,所有的变量都会被替换成文本。变量可以在任意的作用范围被定义,这意味着你可以定义全局变量和局部变量,当然局部变量可以被全局变量覆盖掉。
环境变量
环境变量可以和普通变量一样使用,但是在使用的时候需要加上.env
前缀,举个例子,tsdbHost = ${env.TSDBHOST}
(大括号可以选择性存在),调用了一个不存在或者值为空的环境变量是错误的。
代码段
全局变量
所有不在段落中的key=value
对都是全局变量,它们通常被置于文件的顶部,所有的全局变量都是可以选择性存在的,但是你必须配置最少一个后端。
后端
- tsdbHost:OpenTSDB的访问地址,必须采用压缩形式(使用OpenTSDB的next分支),可以同时制定IP和端口:
tsdb-host:4242
,如果端口没有指定,那么会使用默认端口4242,如果你使用的时候并未使用Bosun来转发数据岛OpenTSDB(这并非我们正式支持的)- 标签支持正则匹配,可以采用
avg:metric.name{tag=something-*}
的形式,当然单个星号比如说tag=*
也能正常匹配。 - 项目页
- 图标页中得标签列表
- 标签支持正则匹配,可以采用
- tsdbVersion:如果没有指定默认的OpenTSDB版本为2.1,应该按照
数字.数字
的形式被指定,不同在OpenTSDB 特性在新版本中逐步被添加。 - relayListen:监听指定的端口(默认为4242端口),将会将收到的所有
/api/X
请求转发到OpenTSDB上去,这是一个在使用OpenTSDB时的可选功能,没有任何的Bousn功能会依赖这个变量。 graphiteHost:
数据存储
在bosun的0.5.0版本,bosun使用redis来存储其内部的状态信息,你可以选择运行一个redis服务来支撑bosun的状态数据,当然如果你采用单机模式你可以使用内嵌的ledisDb数据库来代替Redis。我们推荐在正式环境下使用Redis,这里我们展示了一个redis配置的例子、所有经过测试的redis版本以及一个备份作业的计划任务样例。 配置项:
redisHost:使用的redis服务地址,例子:localhost:6379,需要3.0版本以上的Redis。
- redisDb:redis使用的数据库,默认为0。
- redisPassword:redis使用的密码。
- ledisDir: ledisDb用来存放数据的目录,如果没有使用redis,那么默认会把ledisDb数据存放在工作目录下。
- ledisBindAddr:ledisDb绑定的IP和端口,默认为127.0.0.1:9565。
配置信息
- checkFrequency: time between alert checks, defaults to 5m
- defaultRunEvery: default multiplier of check frequency to run alerts. Defaults to 1.
- emailFrom: from address for notification emails, required for email notifications
- httpListen: HTTP listen address, defaults to :8070
- hostname: when generating links in templates, use this value as the hostname instead of using the system’s hostname
- minGroupSize: minimum group size for alerts to be grouped together on dashboard. Default 5.
- ping: if present, will ping all values tagged with host
- responseLimit: number of bytes to limit OpenTSDB responses, defaults to 1MB (1048576)
- searchSince: duration of time to filter by during certain searches, defaults to 3d; currently used by the hosts list on the items page
- smtpHost: SMTP server, required for email notifications
- squelch: see alert squelch
- stateFile: bosun state file, defaults to bosun.state
- unknownTemplate: name of the template for unknown alerts
- shortURLKey: goo.gl API key, needed if you hit usage limits when using the short link button
SMTP认证
宏段
模板段
预警模板中的可用变量
预警模板中的可用函数
未知模板
预警段
一个预警是能够触发邮件行为或者是纪录行为表达式,这个表达式需要产出一个标量,当这个标量的值不为0的时候就会触发预警,预警行为会根据标签列表返回一个队列。指定开始时间和结束时间在预警行为中是个错误,下面的这些变量决定了这个预警系统的行为。
- crit:
- critNotification:
- depends:
- ignoreUnknown:
- unknownIsNormal:
- runEvery:
- squelch:
- template:
- unjoinedOk:
- unknown:
- warn:
- warnNotification:
- log:
- maxLogFrequency:
通知段
通知行为
查找段
样例文件
tsdbHost = tsdb01.stackoverflow.com:4242
smtpHost = mail.stackoverflow.com:25
template cpu {
body = `Alert definition:
Name: {{.Alert.Name}}
Crit: {{.Alert.Crit}}
Tags:{{range $k, $v := .Group}}
{{$k}}: {{$v}}{{end}}
`
subject = cpu idle at {{.Alert.Vars.q | .E}} on {{.Group.host}}
}
notification default {
email = [email protected]
next = default
timeout = 1h
}
alert cpu {
template = cpu
$q = avg(q("sum:rate:linux.cpu{host=*,type=idle}", "1m"))
crit = $q < 40
notification = default
}